package com.zhouyu.register;

import com.zhouyu.common.URL;

import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MapRemoteRegister {

    // 定义一个静态的Map，用于存储接口名和URL的对应关系
    private static Map<String, List<URL>> map = new HashMap<>();

    // 注册接口名和URL的对应关系
    public static void regist(String interfaceName, URL url) {
        // 获取接口名对应的URL列表
        List<URL> list = map.get(interfaceName);
        // 如果列表为空，则创建一个新的列表
        if (list == null) {
            list = new ArrayList<>();
        }
        // 将URL添加到列表中
        list.add(url);

        // 将接口名和URL列表存入Map中
        map.put(interfaceName, list);

        // 保存到文件中
        saveFile();
    }

    // 获取接口名对应的URL列表
    public static List<URL> get(String interfaceName) {
        // 从文件中读取Map
        map = getFile();

        // 返回接口名对应的URL列表
        return map.get(interfaceName);
    }

    // 将Map保存到文件中
    private static void saveFile() {
        try {
            // 创建文件输出流
            FileOutputStream fileOutputStream = new FileOutputStream("/temp.txt");
            // 创建对象输出流
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
            // 将Map写入文件
            objectOutputStream.writeObject(map);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 从文件中读取Map
    private static Map<String, List<URL>> getFile() {
        try {
            // 创建文件输入流
            FileInputStream fileInputStream = new FileInputStream("/temp.txt");
            // 创建对象输入流
            ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
            // 从文件中读取Map
            return (Map<String, List<URL>>) objectInputStream.readObject();
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
        // 如果读取失败，则返回null
        return null;
    }

}
